In data communication systems that require the detection (and possibly correction) of errors in the data transmission, the data is typically divided into units over which independent error checking is done. These units could be frames, messages, packets, or blocks; and often, these terms are used synonymously.
A method of checking for errors in data blocks is by incorporating a checking mechanism such as a cyclic redundancy checking protocol. Such a protocol uses a CRC code (or CRC) that is generated from each data block of data at a transmission end by a transmitting device. The CRC code has properties well known in the art. The transmitting device calculates the value of the CRC code and appends it to its associated data block. At the receiving end, a receiving device makes a similar calculation on the data block and compares it with the received CRC code. If the received and calculated CRC codes match, the data block is considered to be error free. If the codes do not match, an error has been detected. Alternatively, and with the same effect, a receiver can perform a CRC calculation over the received message and its appended CRC code: and then, compare the results against a constant (typically zero) with a mismatch indicating a message error.
Another common method of checking for errors in data blocks is by incorporating a checksum. This behaves the same as a CRC except that the mathematics used to calculate the check code is modular integer addition over the block rather than the CRC's division of the block by a Galois field of two polynomial. There are additional error checking methods in use or which are possible that create redundant data via some mathematical operations over a block of data.
Some communication protocols utilize a CRC that covers not only the contents of the data block but also an additional constant data that is not transmitted (hidden data). That is, in this protocol, the CRC is calculated based on each packet of data (block of data) and the hidden data. This hidden data, however, can provide problems for receivers receiving a block of data with a CRC that is calculated based not only on the data but also hidden data when the receiver does not have knowledge of the hidden data. These receivers cannot determine the correctness of the CRC of a received message or distinguish between packet corruption during transmission or source data corruption if there is an error. Similarly, the hidden data can also provide a problem for diagnostic testing of blocks of data in a bus. That is, test equipment used to monitor the blocks of data in a bus will not be able to accurately test the reliability of the CRC if the CRC includes hidden data that the test equipment does not know about. Moreover, having to determine what the hidden data is using current methods and then having to program the test equipment to take the hidden data into consideration is difficult and inefficient. All of the error checking methods that create redundant data via some mathematical operations over a block of data can hide data in a manner similar to the CRC method.
In some time-triggered communication systems, each node is required to have instructions for communications that controls behaviors such as time triggering and synchronization so each node knows how to communicate with the other nodes. The instructions are typically given to the nodes through a table. The tables are occasionally updated and identified by their version number. For proper communication between nodes, the same version of the table must be used between nodes. Therefore, it is important for each node to know which version of the table to use. One method of ensuring that each node is using the same version of table is by explicitly sending (i.e. dedicating a bit or bits in a block of data) over a communication signal that can be read and verified by the nodes in communication. This however, reduces the possible bandwidth for sending data since one or more bits are designated as a table identifier. Another method is to put the table version in a message as hidden data. However, if the table identifier bits are incorrect, an incorrect version of the table will be identified and errors in the communications between the nodes will occur. The possibility of incorrect table bits leading to incorrect table use occurs both in the explicitly sending methods and the hidden data methods currently practiced in the art. In addition, the hidden data method as practiced in the art can't distinguish between message data errors and incompatible table versions.
In addition, current practices require the explicit sending of communication related schedule position data in order to facilitate the integration or re-integration of powering-up or recovering nodes. This requires dedicated bandwidth to be consumed with such data and lowers network efficiency. Also, if this data is not sent in every transmission, the frames carrying such data need to be differentiated from frames not carrying such data. The requirement for differentiation leaves the frame vulnerable to errors of invalid frame type identifiers.
For the reasons stated above and for other reasons stated below which will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for a method of providing message validity checking using hidden data even if the hidden data is not known or is incompatible between transmitters and receivers and a need for extraction of the value of the hidden data directly from the message stream without the expense of an alternate path to convey the hidden data.